package modelo;

import excepcion.ErrorPosicionFueraDeRango;

public class Movimiento {

	private String direccion;
	
	public Movimiento(String direccion) {
		this.direccion = direccion;
	}
	
	public Posicion mover(Posicion posicion) {
		Posicion nuevaPosicion = null;
		try {
			switch(direccion) {
				case "este": nuevaPosicion = posicion.siguienteColumna(1);
				break;
				case "oeste": nuevaPosicion = posicion.siguienteColumna(-1);
				break;
				case "norte": nuevaPosicion = posicion.siguienteFila(-1);
				break;
				case "sur": nuevaPosicion = posicion.siguienteFila(1);
				break;
			}
		} catch (ErrorPosicionFueraDeRango e){
			this.invertirMovimiento();
		}
		
		if (nuevaPosicion != null)
			return nuevaPosicion;
		else
			return posicion;	
	}
	
	public void invertirMovimiento() {
		switch(direccion) {
			case "este": direccion = "oeste";
			break;
			case "oeste": direccion = "este";
			break;
			case "norte": direccion = "sur";
			break;
			case "sur": direccion = "norte";
			break;
		}
	}
	
	public String obtenerDireccion(){
		return this.direccion;
	}
}
